<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">

<title>class Delegator - delegate: Ruby Standard Library Documentation</title>


<script src="./js/navigation.js" defer></script>
<script src="./js/search.js" defer></script>
<script src="./js/search_index.js" defer></script>
<script src="./js/searcher.js" defer></script>
<script src="./js/darkfish.js" defer></script>

<script src="./js/jquery-3.2.0.min.js"></script>

<script src="./js/vue.min.js"></script>
<script src="./js/js.cookie.min.js"></script>

<link href="./css/fonts.css" rel="stylesheet">
<link id='rdoccss' href="./css/rdoc.css" rel="stylesheet">
<link href="./css/carbon17.css" rel="stylesheet">

<script type="text/javascript">
  var rdoc_rel_prefix = "./";
  var index_rel_prefix = "./";
  var darkModeCsseHref = "./css/rdoc-dm.css"
  var defaultModeCssHref = "./css/rdoc.css"
  // var cssDarkmode = Cookies.get('darkmode');
  
  if( Cookies.get("darkmode") == "true") {
	$('#rdoccss').attr("href", darkModeCsseHref);
}

//  https://cssdeck.com/blog/simple-jquery-stylesheet-switcher/

document.write('<style type="text/css">body{display:none}</style>');

</script>


</head>
<body id="top" role="document" class="class">
  <!-- this is class.html -->

  <div id='actionbar' >
    <div class='wrapper mdiv'>
      <ul class='grids g0'></ul>
    </div> 
    <!-- VERSION HEADER for 3.3.0.preview2 NOT FOUND -->
  </div> <!-- end action bar -->

  <div class='wrapper hdiv'>

    


    <nav id='vapp' role="navigation">
    <div id="project-navigation">
      <div id="home-section" role="region" title="Quick navigation" class="nav-section">
  <h2><a href="./index.html" rel="home">Home</a></h2>

  <div id="table-of-contents-navigation"  >
    <a href="./table_of_contents.html#pages">Pages</a>
    <a href="./table_of_contents.html#classes">Classes</a>
    <a href="./table_of_contents.html#methods">Methods</a>
  </div>
</div>

      <div id="search-section" role="search" class="project-section initially-hidden">
  <form action="#" method="get" accept-charset="utf-8">
    <div id="search-field-wrapper">
      <input id="search-field" role="combobox" aria-label="Search"
             aria-autocomplete="list" aria-controls="search-results"
             type="text" name="search" placeholder="Search" spellcheck="false"
             title="Type to search, Up and Down to navigate, Enter to load">
    </div>

    <ul id="search-results" aria-label="Search Results"
        aria-busy="false" aria-expanded="false"
        aria-atomic="false" class="initially-hidden"></ul>
  </form>
</div>

    </div>


    

    <button id='toggleThing' @click="toggleNav()" >Show/hide navigation</button>
    <div :class="isOpen ? 'block' : 'hidden' " id='toggleMe'>
      <div id="class-metadata">
        
        
<div id="parent-class-section" class="nav-section">
  <h3>Parent</h3>

  <p class="link">BasicObject
</div>

        
        
        
<!-- Method Quickref -->
<div id="method-list-section" class="nav-section">
  <h3>Methods</h3>

  <ul class="link-list" role="directory">
    <li ><a href="#method-c-new">::new</a>
    <li ><a href="#method-i-21">#!</a>
    <li ><a href="#method-i-21-3D">#!=</a>
    <li ><a href="#method-i-3D-3D">#==</a>
    <li ><a href="#method-i-__getobj__">#__getobj__</a>
    <li ><a href="#method-i-__raise__">#__raise__</a>
    <li ><a href="#method-i-__setobj__">#__setobj__</a>
    <li ><a href="#method-i-eql-3F">#eql?</a>
    <li class="calls-super" ><a href="#method-i-freeze">#freeze</a>
    <li ><a href="#method-i-marshal_dump">#marshal_dump</a>
    <li ><a href="#method-i-marshal_load">#marshal_load</a>
    <li class="calls-super" ><a href="#method-i-method_missing">#method_missing</a>
    <li class="calls-super" ><a href="#method-i-methods">#methods</a>
    <li class="calls-super" ><a href="#method-i-protected_methods">#protected_methods</a>
    <li class="calls-super" ><a href="#method-i-public_methods">#public_methods</a>
    <li ><a href="#method-i-raise">#raise</a>
    <li ><a href="#method-i-respond_to_missing-3F">#respond_to_missing?</a>
    <li ><a href="#method-i-target_respond_to-3F">#target_respond_to?</a>
  </ul>
</div>

      </div>
     </div>
    </nav>


    <div id='extraz'><div class='adzbox-index'  >
      
     </div>         
    </div>

    <main role="main" aria-labelledby="class-Delegator">
    <h1 id="class-Delegator" class="class">
      class Delegator
    </h1>

    <section class="description">
    
<p>This library provides three different ways to delegate method calls to an object.  The easiest to use is <a href="SimpleDelegator.html"><code>SimpleDelegator</code></a>.  Pass an object to the constructor and all methods supported by the object will be delegated.  This object can be changed later.</p>

<p>Going a step further, the top level DelegateClass method allows you to easily setup delegation through class inheritance.  This is considerably more flexible and thus probably the most common use for this library.</p>

<p>Finally, if you need full control over the delegation scheme, you can inherit from the abstract class <a href="Delegator.html"><code>Delegator</code></a> and customize as needed.  (If you find yourself needing this control, have a look at Forwardable which is also in the standard library.  It may suit your needs better.)</p>

<p>SimpleDelegator’s implementation serves as a nice example of the use of Delegator:</p>

<pre class="ruby"><span class="ruby-identifier">require</span> <span class="ruby-string">&#39;delegate&#39;</span>

<span class="ruby-keyword">class</span> <span class="ruby-constant">SimpleDelegator</span> <span class="ruby-operator">&lt;</span> <span class="ruby-constant">Delegator</span>
  <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">__getobj__</span>
    <span class="ruby-ivar">@delegate_sd_obj</span> <span class="ruby-comment"># return object we are delegating to, required</span>
  <span class="ruby-keyword">end</span>

  <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">__setobj__</span>(<span class="ruby-identifier">obj</span>)
    <span class="ruby-ivar">@delegate_sd_obj</span> = <span class="ruby-identifier">obj</span> <span class="ruby-comment"># change delegation object,</span>
                           <span class="ruby-comment"># a feature we&#39;re providing</span>
  <span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span>
</pre>

<h2 id="class-Delegator-label-Notes">Notes<span><a href="#class-Delegator-label-Notes">&para;</a> <a href="#top">&uarr;</a></span></h2>

<p>Be advised, RDoc will not detect delegated methods.</p>

    </section>

      <section id="5Buntitled-5D" class="documentation-section">


      <section class="constants-list">
      <header>
      <h3>Constants</h3>
      </header>
      <dl>
          <dt id="KERNEL_RESPOND_TO">KERNEL_RESPOND_TO
          <dd>
          <dt id="VERSION">VERSION
          <dd>
        </dl>
        </section>



                <section id="public-class-5Buntitled-5D-method-details" class="method-section">
                <header>
                <h3>Public Class Methods</h3>
                </header>

                  <div id="method-c-new" class="method-detail ">
                            <div class="method-heading">
                              <span class="method-name">new</span><span
                                class="method-args">(obj)</span>
                              <span class="method-click-advice">click to toggle source</span>
                            </div>

                            <div class="method-description">
                              <p>Pass in the <em>obj</em> to delegate method calls to.  All methods supported by <em>obj</em> will be delegated to.</p>

                              <div class="method-source-code" id="new-source">
            <pre><span class="ruby-comment"># File delegate.rb, line 75</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">initialize</span>(<span class="ruby-identifier">obj</span>)
  <span class="ruby-identifier">__setobj__</span>(<span class="ruby-identifier">obj</span>)
<span class="ruby-keyword">end</span></pre>
                              </div>
                            </div>


                          </div>

                          </section>

                <section id="public-instance-5Buntitled-5D-method-details" class="method-section">
                <header>
                <h3>Public Instance Methods</h3>
                </header>

                  <div id="method-i-21" class="method-detail ">
                            <div class="method-heading">
                              <span class="method-name">!</span><span
                                class="method-args">()</span>
                              <span class="method-click-advice">click to toggle source</span>
                            </div>

                            <div class="method-description">
                              <p>Delegates ! to the _<em>getobj</em>_</p>

                              <div class="method-source-code" id="21-source">
            <pre><span class="ruby-comment"># File delegate.rb, line 180</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">!</span>
  <span class="ruby-operator">!</span><span class="ruby-identifier">__getobj__</span>
<span class="ruby-keyword">end</span></pre>
                              </div>
                            </div>


                          </div>

                  <div id="method-i-21-3D" class="method-detail ">
                            <div class="method-heading">
                              <span class="method-name">!=</span><span
                                class="method-args">(obj)</span>
                              <span class="method-click-advice">click to toggle source</span>
                            </div>

                            <div class="method-description">
                              <p>Returns true if two objects are not considered of equal value.</p>

                              <div class="method-source-code" id="21-3D-source">
            <pre><span class="ruby-comment"># File delegate.rb, line 164</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">!=</span>(<span class="ruby-identifier">obj</span>)
  <span class="ruby-keyword">return</span> <span class="ruby-keyword">false</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">obj</span>.<span class="ruby-identifier">equal?</span>(<span class="ruby-keyword">self</span>)
  <span class="ruby-identifier">__getobj__</span> <span class="ruby-operator">!=</span> <span class="ruby-identifier">obj</span>
<span class="ruby-keyword">end</span></pre>
                              </div>
                            </div>


                          </div>

                  <div id="method-i-3D-3D" class="method-detail ">
                            <div class="method-heading">
                              <span class="method-name">==</span><span
                                class="method-args">(obj)</span>
                              <span class="method-click-advice">click to toggle source</span>
                            </div>

                            <div class="method-description">
                              <p>Returns true if two objects are considered of equal value.</p>

                              <div class="method-source-code" id="3D-3D-source">
            <pre><span class="ruby-comment"># File delegate.rb, line 156</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">==</span>(<span class="ruby-identifier">obj</span>)
  <span class="ruby-keyword">return</span> <span class="ruby-keyword">true</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">obj</span>.<span class="ruby-identifier">equal?</span>(<span class="ruby-keyword">self</span>)
  <span class="ruby-keyword">self</span>.<span class="ruby-identifier">__getobj__</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">obj</span>
<span class="ruby-keyword">end</span></pre>
                              </div>
                            </div>


                          </div>

                  <div id="method-i-__getobj__" class="method-detail ">
                            <div class="method-heading">
                              <span class="method-name">__getobj__</span><span
                                class="method-args">()</span>
                              <span class="method-click-advice">click to toggle source</span>
                            </div>

                            <div class="method-description">
                              <p>This method must be overridden by subclasses and should return the object method calls are being delegated to.</p>

                              <div class="method-source-code" id="__getobj__-source">
            <pre><span class="ruby-comment"># File delegate.rb, line 188</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">__getobj__</span>
  <span class="ruby-identifier">__raise__</span> <span class="ruby-operator">::</span><span class="ruby-constant">NotImplementedError</span>, <span class="ruby-string">&quot;need to define `__getobj__&#39;&quot;</span>
<span class="ruby-keyword">end</span></pre>
                              </div>
                            </div>


                          </div>

                  <div id="method-i-__raise__" class="method-detail method-alias">
                            <div class="method-heading">
                              <span class="method-name">__raise__</span><span
                                class="method-args">()</span>
                            </div>

                            <div class="method-description">
                              

                            </div>


                            <div class="aliases">
                              Alias for: <a href="Delegator.html#method-i-raise">raise</a>
                            </div>
                          </div>

                  <div id="method-i-__setobj__" class="method-detail ">
                            <div class="method-heading">
                              <span class="method-name">__setobj__</span><span
                                class="method-args">(obj)</span>
                              <span class="method-click-advice">click to toggle source</span>
                            </div>

                            <div class="method-description">
                              <p>This method must be overridden by subclasses and change the object delegate to <em>obj</em>.</p>

                              <div class="method-source-code" id="__setobj__-source">
            <pre><span class="ruby-comment"># File delegate.rb, line 196</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">__setobj__</span>(<span class="ruby-identifier">obj</span>)
  <span class="ruby-identifier">__raise__</span> <span class="ruby-operator">::</span><span class="ruby-constant">NotImplementedError</span>, <span class="ruby-string">&quot;need to define `__setobj__&#39;&quot;</span>
<span class="ruby-keyword">end</span></pre>
                              </div>
                            </div>


                          </div>

                  <div id="method-i-eql-3F" class="method-detail ">
                            <div class="method-heading">
                              <span class="method-name">eql?</span><span
                                class="method-args">(obj)</span>
                              <span class="method-click-advice">click to toggle source</span>
                            </div>

                            <div class="method-description">
                              <p>Returns true if two objects are considered of equal value.</p>

                              <div class="method-source-code" id="eql-3F-source">
            <pre><span class="ruby-comment"># File delegate.rb, line 172</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">eql?</span>(<span class="ruby-identifier">obj</span>)
  <span class="ruby-keyword">return</span> <span class="ruby-keyword">true</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">obj</span>.<span class="ruby-identifier">equal?</span>(<span class="ruby-keyword">self</span>)
  <span class="ruby-identifier">obj</span>.<span class="ruby-identifier">eql?</span>(<span class="ruby-identifier">__getobj__</span>)
<span class="ruby-keyword">end</span></pre>
                              </div>
                            </div>


                          </div>

                  <div id="method-i-freeze" class="method-detail ">
                            <div class="method-heading">
                              <span class="method-name">freeze</span><span
                                class="method-args">()</span>
                              <span class="method-click-advice">click to toggle source</span>
                            </div>

                            <div class="method-description">
                              <p>:method: freeze Freeze both the object returned by _<em>getobj</em>_ and self.</p>
                                <div class="method-calls-super">
                                  Calls superclass method
                                  
                              </div>

                              <div class="method-source-code" id="freeze-source">
            <pre><span class="ruby-comment"># File delegate.rb, line 237</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">freeze</span>
  <span class="ruby-identifier">__getobj__</span>.<span class="ruby-identifier">freeze</span>
  <span class="ruby-keyword">super</span>()
<span class="ruby-keyword">end</span></pre>
                              </div>
                            </div>


                          </div>

                  <div id="method-i-marshal_dump" class="method-detail ">
                            <div class="method-heading">
                              <span class="method-name">marshal_dump</span><span
                                class="method-args">()</span>
                              <span class="method-click-advice">click to toggle source</span>
                            </div>

                            <div class="method-description">
                              <p>Serialization support for the object returned by _<em>getobj</em>_.</p>

                              <div class="method-source-code" id="marshal_dump-source">
            <pre><span class="ruby-comment"># File delegate.rb, line 203</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">marshal_dump</span>
  <span class="ruby-identifier">ivars</span> = <span class="ruby-identifier">instance_variables</span>.<span class="ruby-identifier">reject</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">var</span><span class="ruby-operator">|</span> <span class="ruby-regexp">/\A@delegate_/</span> <span class="ruby-operator">=~</span> <span class="ruby-identifier">var</span>}
  [
    <span class="ruby-value">:__v2__</span>,
    <span class="ruby-identifier">ivars</span>, <span class="ruby-identifier">ivars</span>.<span class="ruby-identifier">map</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">var</span><span class="ruby-operator">|</span> <span class="ruby-identifier">instance_variable_get</span>(<span class="ruby-identifier">var</span>)},
    <span class="ruby-identifier">__getobj__</span>
  ]
<span class="ruby-keyword">end</span></pre>
                              </div>
                            </div>


                          </div>

                  <div id="method-i-marshal_load" class="method-detail ">
                            <div class="method-heading">
                              <span class="method-name">marshal_load</span><span
                                class="method-args">(data)</span>
                              <span class="method-click-advice">click to toggle source</span>
                            </div>

                            <div class="method-description">
                              <p>Reinitializes delegation from a serialized object.</p>

                              <div class="method-source-code" id="marshal_load-source">
            <pre><span class="ruby-comment"># File delegate.rb, line 215</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">marshal_load</span>(<span class="ruby-identifier">data</span>)
  <span class="ruby-identifier">version</span>, <span class="ruby-identifier">vars</span>, <span class="ruby-identifier">values</span>, <span class="ruby-identifier">obj</span> = <span class="ruby-identifier">data</span>
  <span class="ruby-keyword">if</span> <span class="ruby-identifier">version</span> <span class="ruby-operator">==</span> <span class="ruby-value">:__v2__</span>
    <span class="ruby-identifier">vars</span>.<span class="ruby-identifier">each_with_index</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">var</span>, <span class="ruby-identifier">i</span><span class="ruby-operator">|</span> <span class="ruby-identifier">instance_variable_set</span>(<span class="ruby-identifier">var</span>, <span class="ruby-identifier">values</span>[<span class="ruby-identifier">i</span>])}
    <span class="ruby-identifier">__setobj__</span>(<span class="ruby-identifier">obj</span>)
  <span class="ruby-keyword">else</span>
    <span class="ruby-identifier">__setobj__</span>(<span class="ruby-identifier">data</span>)
  <span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
                              </div>
                            </div>


                          </div>

                  <div id="method-i-method_missing" class="method-detail ">
                            <div class="method-heading">
                              <span class="method-name">method_missing</span><span
                                class="method-args">(m, *args, &amp;block)</span>
                              <span class="method-click-advice">click to toggle source</span>
                            </div>

                            <div class="method-description">
                              
                                <div class="method-calls-super">
                                  Calls superclass method
                                  
                              </div>

                              <div class="method-source-code" id="method_missing-source">
            <pre><span class="ruby-comment"># File delegate.rb, line 82</span>
               <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">method_missing</span>(<span class="ruby-identifier">m</span>, <span class="ruby-operator">*</span><span class="ruby-identifier">args</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
  <span class="ruby-identifier">r</span> = <span class="ruby-keyword">true</span>
  <span class="ruby-identifier">target</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">__getobj__</span> {<span class="ruby-identifier">r</span> = <span class="ruby-keyword">false</span>}

  <span class="ruby-keyword">if</span> <span class="ruby-identifier">r</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">target_respond_to?</span>(<span class="ruby-identifier">target</span>, <span class="ruby-identifier">m</span>, <span class="ruby-keyword">false</span>)
    <span class="ruby-identifier">target</span>.<span class="ruby-identifier">__send__</span>(<span class="ruby-identifier">m</span>, <span class="ruby-operator">*</span><span class="ruby-identifier">args</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
  <span class="ruby-keyword">elsif</span> <span class="ruby-operator">::</span><span class="ruby-constant">Kernel</span>.<span class="ruby-identifier">method_defined?</span>(<span class="ruby-identifier">m</span>) <span class="ruby-operator">||</span> <span class="ruby-operator">::</span><span class="ruby-constant">Kernel</span>.<span class="ruby-identifier">private_method_defined?</span>(<span class="ruby-identifier">m</span>)
    <span class="ruby-operator">::</span><span class="ruby-constant">Kernel</span>.<span class="ruby-identifier">instance_method</span>(<span class="ruby-identifier">m</span>).<span class="ruby-identifier">bind_call</span>(<span class="ruby-keyword">self</span>, <span class="ruby-operator">*</span><span class="ruby-identifier">args</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
  <span class="ruby-keyword">else</span>
    <span class="ruby-keyword">super</span>(<span class="ruby-identifier">m</span>, <span class="ruby-operator">*</span><span class="ruby-identifier">args</span>, <span class="ruby-operator">&amp;</span><span class="ruby-identifier">block</span>)
  <span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
                              </div>
                            </div>


                          </div>

                  <div id="method-i-methods" class="method-detail ">
                            <div class="method-heading">
                              <span class="method-name">methods</span><span
                                class="method-args">(all=true)</span>
                              <span class="method-click-advice">click to toggle source</span>
                            </div>

                            <div class="method-description">
                              <p>Returns the methods available to this delegate object as the union of this object’s and _<em>getobj</em>_ methods.</p>
                                <div class="method-calls-super">
                                  Calls superclass method
                                  
                              </div>

                              <div class="method-source-code" id="methods-source">
            <pre><span class="ruby-comment"># File delegate.rb, line 131</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">methods</span>(<span class="ruby-identifier">all</span>=<span class="ruby-keyword">true</span>)
  <span class="ruby-identifier">__getobj__</span>.<span class="ruby-identifier">methods</span>(<span class="ruby-identifier">all</span>) <span class="ruby-operator">|</span> <span class="ruby-keyword">super</span>
<span class="ruby-keyword">end</span></pre>
                              </div>
                            </div>


                          </div>

                  <div id="method-i-protected_methods" class="method-detail ">
                            <div class="method-heading">
                              <span class="method-name">protected_methods</span><span
                                class="method-args">(all=true)</span>
                              <span class="method-click-advice">click to toggle source</span>
                            </div>

                            <div class="method-description">
                              <p>Returns the methods available to this delegate object as the union of this object’s and _<em>getobj</em>_ protected methods.</p>
                                <div class="method-calls-super">
                                  Calls superclass method
                                  
                              </div>

                              <div class="method-source-code" id="protected_methods-source">
            <pre><span class="ruby-comment"># File delegate.rb, line 147</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">protected_methods</span>(<span class="ruby-identifier">all</span>=<span class="ruby-keyword">true</span>)
  <span class="ruby-identifier">__getobj__</span>.<span class="ruby-identifier">protected_methods</span>(<span class="ruby-identifier">all</span>) <span class="ruby-operator">|</span> <span class="ruby-keyword">super</span>
<span class="ruby-keyword">end</span></pre>
                              </div>
                            </div>


                          </div>

                  <div id="method-i-public_methods" class="method-detail ">
                            <div class="method-heading">
                              <span class="method-name">public_methods</span><span
                                class="method-args">(all=true)</span>
                              <span class="method-click-advice">click to toggle source</span>
                            </div>

                            <div class="method-description">
                              <p>Returns the methods available to this delegate object as the union of this object’s and _<em>getobj</em>_ public methods.</p>
                                <div class="method-calls-super">
                                  Calls superclass method
                                  
                              </div>

                              <div class="method-source-code" id="public_methods-source">
            <pre><span class="ruby-comment"># File delegate.rb, line 139</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">public_methods</span>(<span class="ruby-identifier">all</span>=<span class="ruby-keyword">true</span>)
  <span class="ruby-identifier">__getobj__</span>.<span class="ruby-identifier">public_methods</span>(<span class="ruby-identifier">all</span>) <span class="ruby-operator">|</span> <span class="ruby-keyword">super</span>
<span class="ruby-keyword">end</span></pre>
                              </div>
                            </div>


                          </div>

                  <div id="method-i-raise" class="method-detail ">
                            <div class="method-heading">
                              <span class="method-name">raise</span><span
                                class="method-args">()</span>
                              <span class="method-click-advice">click to toggle source</span>
                            </div>

                            <div class="method-description">
                              <p>Use #__raise__ if your <a href="Delegator.html"><code>Delegator</code></a> does not have a object to delegate the <a href="Delegator.html#method-i-raise"><code>raise</code></a> method call.</p>

                              <div class="method-source-code" id="raise-source">
            <pre><span class="ruby-comment"># File delegate.rb, line 66</span>
  </pre>
                              </div>
                            </div>

                            <div class="aliases">
                              Also aliased as: <a href="Delegator.html#method-i-__raise__">__raise__</a>
                            </div>

                          </div>

                  <div id="method-i-respond_to_missing-3F" class="method-detail ">
                            <div class="method-heading">
                              <span class="method-name">respond_to_missing?</span><span
                                class="method-args">(m, include_private)</span>
                              <span class="method-click-advice">click to toggle source</span>
                            </div>

                            <div class="method-description">
                              <p>Checks for a method provided by this the delegate object by forwarding the call through _<em>getobj</em>_.</p>

                              <div class="method-source-code" id="respond_to_missing-3F-source">
            <pre><span class="ruby-comment"># File delegate.rb, line 99</span>
<span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">respond_to_missing?</span>(<span class="ruby-identifier">m</span>, <span class="ruby-identifier">include_private</span>)
  <span class="ruby-identifier">r</span> = <span class="ruby-keyword">true</span>
  <span class="ruby-identifier">target</span> = <span class="ruby-keyword">self</span>.<span class="ruby-identifier">__getobj__</span> {<span class="ruby-identifier">r</span> = <span class="ruby-keyword">false</span>}
  <span class="ruby-identifier">r</span> <span class="ruby-operator">&amp;&amp;=</span> <span class="ruby-identifier">target_respond_to?</span>(<span class="ruby-identifier">target</span>, <span class="ruby-identifier">m</span>, <span class="ruby-identifier">include_private</span>)
  <span class="ruby-keyword">if</span> <span class="ruby-identifier">r</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">include_private</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-operator">!</span><span class="ruby-identifier">target_respond_to?</span>(<span class="ruby-identifier">target</span>, <span class="ruby-identifier">m</span>, <span class="ruby-keyword">false</span>)
    <span class="ruby-identifier">warn</span> <span class="ruby-node">&quot;delegator does not forward private method \##{m}&quot;</span>, <span class="ruby-value">uplevel:</span> <span class="ruby-value">3</span>
    <span class="ruby-keyword">return</span> <span class="ruby-keyword">false</span>
  <span class="ruby-keyword">end</span>
  <span class="ruby-identifier">r</span>
<span class="ruby-keyword">end</span></pre>
                              </div>
                            </div>


                          </div>

                          </section>

                <section id="private-instance-5Buntitled-5D-method-details" class="method-section">
                <header>
                <h3>Private Instance Methods</h3>
                </header>

                  <div id="method-i-target_respond_to-3F" class="method-detail ">
                            <div class="method-heading">
                              <span class="method-name">target_respond_to?</span><span
                                class="method-args">(target, m, include_private)</span>
                              <span class="method-click-advice">click to toggle source</span>
                            </div>

                            <div class="method-description">
                              <p>Handle BasicObject instances</p>

                              <div class="method-source-code" id="target_respond_to-3F-source">
            <pre><span class="ruby-comment"># File delegate.rb, line 114</span>
        <span class="ruby-keyword">def</span> <span class="ruby-identifier ruby-title">target_respond_to?</span>(<span class="ruby-identifier">target</span>, <span class="ruby-identifier">m</span>, <span class="ruby-identifier">include_private</span>)
  <span class="ruby-keyword">case</span> <span class="ruby-identifier">target</span>
  <span class="ruby-keyword">when</span> <span class="ruby-constant">Object</span>
    <span class="ruby-identifier">target</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-identifier">m</span>, <span class="ruby-identifier">include_private</span>)
  <span class="ruby-keyword">else</span>
    <span class="ruby-keyword">if</span> <span class="ruby-constant">KERNEL_RESPOND_TO</span>.<span class="ruby-identifier">bind_call</span>(<span class="ruby-identifier">target</span>, <span class="ruby-value">:respond_to?</span>)
      <span class="ruby-identifier">target</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-identifier">m</span>, <span class="ruby-identifier">include_private</span>)
    <span class="ruby-keyword">else</span>
      <span class="ruby-constant">KERNEL_RESPOND_TO</span>.<span class="ruby-identifier">bind_call</span>(<span class="ruby-identifier">target</span>, <span class="ruby-identifier">m</span>, <span class="ruby-identifier">include_private</span>)
    <span class="ruby-keyword">end</span>
  <span class="ruby-keyword">end</span>
<span class="ruby-keyword">end</span></pre>
                              </div>
                            </div>


                          </div>

                          </section>

              </section>
              </main>



            </div>  <!--  class='wrapper hdiv' -->


<footer id="validator-badges" role="contentinfo">
<p><a href="https://validator.w3.org/check/referer">Validate</a></p>
<p>Generated by <a href="https://ruby.github.io/rdoc/">RDoc</a> 6.4.0.</p>
<p>Based on <a href="https://github.com/ged/darkfish/">Darkfish</a> by <a href="http://deveiate.org">Michael Granger</a>.</p>

  
    <p><p><a href="https://ruby-doc.org">Ruby-doc.org</a> is a service of <a href="https://jamesbritt.com">James Britt</a> and <a href="https://neurogami.com">Neurogami</a>, purveyors of fine <a href='https://jamesbritt.bandcamp.com/'>dance noise</a></p>
</p>
  
  </footer>

<script type="text/javascript">


  let ads  = $("#carbonads-container").children().detach();


  function swapMode() {
    var cookieName = 'darkmode';
    var cssDarkmode = Cookies.get(cookieName);
    console.log("***** swapMode! " + cssDarkmode + " *****");


    if (cssDarkmode == "true") {
      console.log("We have dark mode, set the css to light ...");
      $('#rdoccss').attr("href", defaultModeCssHref);
      $('#cssSelect').text("Dark mode");
      cssDarkmode = "false";
      console.log("swapMode! Now set cookie to " + cssDarkmode);
      Cookies.set(cookieName, cssDarkmode);

    } else {
      console.log("We not have dark mode, set the css to dark ...");
      $('#rdoccss').attr("href", darkModeCsseHref);
      $('#cssSelect').text("Light mode");
      cssDarkmode = "true";
      console.log("swapMode! Now set cookie to " + cssDarkmode);
      Cookies.set(cookieName, cssDarkmode);

    }

    console.log("  --------------- ");
  }


const vueCssApp = new Vue({
el: '#menubar',
data: {
isDark: false
},
methods: {
toggleClass: function(event){
this.isDark = !this.isDark;
}
}
})

const vueApp = new Vue({
el: '#vapp',
data: { 
isOpen: true
},

mounted() {
this.handleResize();
this.manage_mob_classes();
window.addEventListener('resize', this.handleResize)
//this.isOpen !=  (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent));
},
destroyed() {
window.removeEventListener('resize', this.handleResize)
},
created() {
//manage_mob_classes();
},

methods : {
isMobile() {
  return (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent));
},

  handleResize() {
    if (!this.isMobile()) {
      this.isOpen = window.innerWidth > 800;
    }
  },

  manage_mob_classes() {
    if (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) {
      $("nav").addClass("mob_nav");
      $("main").addClass("mob_main");
      $("#extraz").addClass("mob_extraz");
      $("#carbonads-container").addClass("mob_carbonads-container");
      this.isOpen  = false;
    } else {
      $("nav").removeClass("mob_nav") 
        $("main").removeClass("mob_main");
      $("#extraz").removeClass("mob_extraz");
      $("#carbonads-container").removeClass("mob_carbonads-container");
      this.isOpen  = true;
    }
  },

  toggleNav() {
    this.isOpen =! this.isOpen ;
    // alert("Toggle nav!");
    console.log("toggleNav() click: " + this.isOpen );
  }
}
})

$("#carbonads-container").append(ads);


$(function() {

    var darkmode = Cookies.get("darkmode");
    console.log("Document ready: " + darkmode);

    if ( darkmode  == "true" ) {
      $('#cssSelect').text("Light mode");
    } else {
      $('#cssSelect').text("Dark mode");
     }

    $('body').css('display','block');
    });

</script>

    
  </body> 
</html>

